package ru.bazunaka.bazbloglite.Usecase.impl;

import org.springframework.stereotype.Component;
import ru.bazunaka.bazbloglite.Entity.UserProfile;
import ru.bazunaka.bazbloglite.Mapper.UserProfileRegisterRequestToUserProfileMapper;
import ru.bazunaka.bazbloglite.Model.UserProfileRegisterRequest;
import ru.bazunaka.bazbloglite.Services.UserProfileService;
import ru.bazunaka.bazbloglite.Usecase.UserProfileRegisterCase;

/**
 * Фасада для регистрации профилей пользователей.
 *
 * @author Андрей Сторожок.
 * @version 1.0
 */
@Component
public class UserProfileRegisterCaseFacade implements UserProfileRegisterCase {

    /**
     * Служба для работы с профилями пользователей.
     */
    private final UserProfileService userProfileService;

    /**
     * Маппер для преобразования запроса на регистрацию профиля пользователя в сущность UserProfile.
     */
    private final UserProfileRegisterRequestToUserProfileMapper mapper;

    /**
     * Конструктор фасада регистрации профилей пользователей.
     *
     * @param userProfileService служба для работы с профилями пользователей
     * @param mapper маппер для преобразования запроса на регистрацию профиля пользователя в сущность UserProfile
     */
    public UserProfileRegisterCaseFacade(UserProfileService userProfileService,
                                         UserProfileRegisterRequestToUserProfileMapper mapper) {
        this.userProfileService = userProfileService;
        this.mapper = mapper;
    }

    /**
     * Регистрация профиля пользователя.
     *
     * @param registerRequest запрос на регистрацию профиля пользователя
     */
    @Override
    public void registerUserProfile(UserProfileRegisterRequest registerRequest) {
        UserProfile userProfile = this.mapper.map(registerRequest);
        this.userProfileService.createUserProfile(userProfile);
    }
}
